package com.yz.hw_student.config;

import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import com.baomidou.mybatisplus.generator.engine.VelocityTemplateEngine;
import java.util.Collections;
/**
 * 演示例子，执行 main 方法控制台输入模块表名回车自动生成对应项目目录中
 *
 * @author yangzheng
 */
public class GeneratorCodeConfig {

    public static void main(String[] args) {

        // 数据库连接信息
        String url = "jdbc:mysql://localhost:3306/hw_student";
        String username = "root";
        String password = "12345678";

        FastAutoGenerator.create(new DataSourceConfig.Builder(url, username, password))
                .globalConfig(builder -> {
                    // 设置作者
                    builder.author("yz")
                            // 开启 swagger 模式
                            .enableSwagger()
                            // 指定输出目录
                            .outputDir(System.getProperty("user.dir") + "/hw_student/src/main/java");
                })
                .packageConfig(builder -> {
                    // 设置父包名
                    builder.parent("com.yz.hw_student.system")
                            // 设置mapperXml生成路径
                            .pathInfo(Collections.singletonMap(OutputFile.xml, System.getProperty("user.dir") + "/src/main/resources/mappers"));
                })
                .strategyConfig(builder -> {
                    // 设置需要生成的表名
                    builder.addInclude("sys_menu","sys_role_menu","sys_user_role")
                            // 生成的实体类使用Lombok
                            .entityBuilder().naming(NamingStrategy.underline_to_camel).enableLombok()
                            // 生成 @RestController 控制器
                            .controllerBuilder().enableRestStyle()
                            // 启用 BaseResultMap
                            .mapperBuilder().enableBaseResultMap();
                })
                // 使用Velocity模板引擎
                .templateEngine(new VelocityTemplateEngine())
                .execute();
    }


}

